package LP;

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.beans.PropertyVetoException;
import java.text.ParseException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;

import javax.swing.JButton;
import javax.swing.JFormattedTextField;
import javax.swing.JFrame;
import javax.swing.JInternalFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;
import javax.swing.border.Border;
import javax.swing.border.EmptyBorder;
import javax.swing.event.InternalFrameEvent;
import javax.swing.event.InternalFrameListener;
import javax.swing.text.MaskFormatter;

import LN.clsGestorProductos;
import LN.clsGestorUsuario;
import LN.clsUsuario;

public class clsfrmRecargarSaldo extends JInternalFrame implements
		ActionListener {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	private JPanel jpBotones;
	private JPanel jpUser;
	private JLabel jlSaldo;
	private static JFormattedTextField jtfSaldo;
	private JButton jbAceptar;
	private JButton jbCancelar;

	String blnUsuarioCorrecto;
	private static HashMap<String, clsUsuario> usuarios;
	private static clsUsuario usuarioActivo;

	private String eleccion;
	private clsUsuario usuario;

	public clsfrmRecargarSaldo(String eleccion, clsUsuario usuario) {

		super("Saldo", true, // resizable
				false, // closable
				false, // maximizable
				false);// iconifiable
		this.eleccion = eleccion;
		this.usuario = usuario;
		setSize(300, 300);

		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		this.inicializarSubComponentes();
		if (eleccion.equals("Ver"))
			this.setTitle("SALDO DEL CLIENTE");
		else
			this.setTitle("RECARGAR SALDO");

	}

	private void inicializarSubComponentes() {

		try {
			MaskFormatter mascara = null;

			jbAceptar = new JButton("Aceptar");
			jbCancelar = new JButton("Cancelar");
			jlSaldo = new JLabel("Saldo:");

			try {
				mascara = new MaskFormatter("###.##");
			} catch (ParseException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			jtfSaldo = new JFormattedTextField(mascara);
			jlSaldo.setLabelFor(jtfSaldo);
			
			if (eleccion.equals("Ver")){
				jtfSaldo.setEditable(false);
				jtfSaldo.setText(String.valueOf(usuario.getSaldo()));
			}
			else{
				jtfSaldo.setText(String.valueOf(000.00));
			}

			jpUser = new JPanel();
			jpUser.setLayout(new GridLayout(3, 2));
			jpUser.setBorder(new EmptyBorder(5, 100, 5, 100));
			jpUser.add(jlSaldo);
			jpUser.add(jtfSaldo);

			jpBotones = new JPanel();
			jpBotones.setLayout(new FlowLayout());
			jpBotones.add(jbAceptar);
			jpBotones.add(jbCancelar);

			this.getContentPane().setLayout(new BorderLayout());
			this.getContentPane().add(jpUser, "Center");
			this.getContentPane().add(jpBotones, "South");

			this.setPreferredSize(new Dimension(450, 200));
			this.setSize(this.getPreferredSize());
			this.setVisible(true);
			// Se posiciona la ventana en el centro de la panalla

			jbAceptar.addActionListener(this);
			jbCancelar.addActionListener(this);
			// jtfUser.addActionListener(this);
			// jpfPass.addActionListener(this);
		} catch (Exception e) {
			System.out.println("Error en la carga del formulario");
		}

	}

	@Override
	public void actionPerformed(ActionEvent e) {
		if (e.getSource() instanceof JButton) {
			JButton btnPulsado = (JButton) e.getSource();

			if (btnPulsado == jbAceptar) {
				
				if(eleccion.equals("Ver")){
					
					//dispose();
				}
				else if(eleccion.equals("Recargar")){

					double saldo = usuario.getSaldo() + Double.parseDouble(jtfSaldo.getText());
					clsGestorUsuario clsGestorUsuario = new clsGestorUsuario();
					usuario.setSaldo(saldo);
					clsGestorUsuario.modificarUsuario(usuario);
					
					String aviso = "Su saldo ha sido recargado. Su saldo actual es " + saldo;
					JOptionPane.showMessageDialog(this, aviso);
					
				}
				
				this.setVisible(false);
				this.dispose();

			} else if (btnPulsado == jbCancelar) {
				blnUsuarioCorrecto = "new user";
				this.setVisible(false);
				this.dispose();

				// System.exit(0);
			}

		}

	}

	public boolean blnCargarFormulario(int xpos, int ypos) {
		boolean blnResultado = true;

		this.setLocation(xpos, ypos);
		// Dimension jInternalFrameSize = this.getSize();
		// this.setLocation((clsfrmPrincipal.getDesktopSize().width/2),
		// (clsfrmPrincipal.getDesktopSize().height/2));
		this.setVisible(true);

		return blnResultado;
	}

	public String getUsuarioCorrecto() {
		return blnUsuarioCorrecto;
	}

}
